EventBridge Scheduler から直接 Knowledge base データソースの同期処理を行ってみた

EventBridge Scheduler から直接 Knowledge base データソースの同期処理を行ってみた

Clock Icon2024.07.08

こんにちは、森田です。

以下のアップデートで EventBridge Scheduler から直接 Amazon Bedrock のAPIを実行できるようになりました。

https://aws.amazon.com/about-aws/whats-new/2024/06/eventbridge-scheduler-universal-targets-amazon-bedrock/

このアップデートで何が嬉しいかというと、 Knowledge bases for Amazon Bedrock のデータソース同期処理が EventBridge Scheduler から直接できるようになりました。

従来までは、EventBridge Scheduler から直接の同期処理ができないため、 Step Functions や AWS Lambda での処理となっていましたが、今回のアップデートでより簡単に同期処理の構成ができるようになります

やってみた

前提条件

すでに Knowledge base, DataSourceは作成済みとします。

今回の検証では、同期処理をわかりやすくするため、事前の同期も行なっていません。

スクリーンショット 2024-07-08 21.50.55

Schedulerの作成

Schedulerの作成を行なっていきます。

以下のCloudFormationテンプレートで必要なリソースを一括で作成します。

CloudFormationテンプレート
---
AWSTemplateFormatVersion: '2010-09-09'
Description:  EventBridge Scheduler KnowledgeBase DataSource startIngestionJob
Parameters:
  DataSourceId:
    Type: String
  KnowledgeBaseId:
    Type: String
  ScheduleTime:
    Type: String
    Default: "cron(40 21 * * ? *)"
  ScheduleTimezone:
    Type: String
    Default: Japan

Resources:
  SchedulestartIngestionJob:
    Type: AWS::Scheduler::Schedule
    Properties:
      Name: !Sub '${KnowledgeBaseId}-${KnowledgeBaseId}-startIngestionJob'
      Description: !Sub 'knowledgeBase startIngestionJob'
      ScheduleExpression: !Ref ScheduleTime 
      ScheduleExpressionTimezone: !Ref ScheduleTimezone
      FlexibleTimeWindow:
        Mode: "OFF"
      State: ENABLED
      Target:
        Arn: arn:aws:scheduler:::aws-sdk:bedrockagent:startIngestionJob
        Input: !Sub |-
          {
            "DataSourceId": "${DataSourceId}",
            "KnowledgeBaseId": "${KnowledgeBaseId}"
          }
        RoleArn:
          Fn::GetAtt:
          - SchedulerRole
          - Arn
  SchedulerRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Effect: Allow
          Principal:
            Service:
            - scheduler.amazonaws.com
          Action:
          - sts:AssumeRole
      Path: "/"
      Policies:
        - PolicyName: startIngestionJob
          PolicyDocument:
            Version: "2012-10-17"
            Statement:
              - Effect: Allow
                Action:
                  - bedrock:StartIngestionJob
                Resource:
                  - !Sub "arn:aws:bedrock:${AWS::Region}:${AWS::AccountId}:knowledge-base/${KnowledgeBaseId}"

CloudFormationのパラメータとしてKnowledge base, DataSourceのID入力が必要となります。

スクリーンショット_2024-07-08_21_47_44

ジョブの実行を確認

CloudFormationのパラメータで入力した時間になるとSchedulerからAPIが実行され、同期処理が開始します。

スクリーンショット 2024-07-08 21.55.59

しばらく待つと以下のように同期処理が完了となります。

スクリーンショット 2024-07-08 22.00.11

回答を生成してみる

Kendraのドキュメントを追加したため、Kendraに関しての質問を行い、正しくソースを利用するか確認してみます。

以下の通り、ソースの詳細が確認できました。

スクリーンショット 2024-07-08 22.01.57

さいごに

EventBridge Schedulerを利用することで、簡単にKnowledge baseのデータソースに対しての同期処理が実現できますのでぜひ使ってみてください。

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.